package guiobj;

import gui.MainPanel;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Vector;

import jsonobj.ClusterIDInfo;

public class CluPanelController {
	public static Vector<String> clusters = new Vector<String>();
	public static DateFormat f= new SimpleDateFormat("H:mm:ss dd/MM/yy");
	
	public static void addClusterInfo(MainPanel p,ClusterPanelInfo i)
	{
		if(clusters.contains(i.hostname))
		{
			 updateClusterInfo(p,i);
			 return;
		}
		Vector<String> t = new Vector();
		clusters.add(i.hostname);
		t.addElement(i.hostname);
		t.addElement(i.status);
		t.addElement(i.nodes);
		t.addElement(i.procs);
		t.addElement(i.ajobs);
		t.addElement(i.qjobs);
		t.addElement(f.format(new Date()));
		p.rows.addElement(t);
		p.cluTab.addNotify();
	}
	
	
	public static void addClusterInfo(MainPanel p,String hostname)
	{
		int index = clusters.indexOf(hostname);
		if(index != -1)
		{
			p.cluTab.setValueAt("Connected", index, 1);
			return;
		}
		Vector t = new Vector();
		clusters.add(hostname);
		t.addElement(hostname);
		t.addElement("Connected");
		t.addElement("n/a");
		t.addElement("n/a");
		t.addElement("n/a");
		t.addElement("n/a");
		t.addElement(f.format(new Date()));
		p.rows.addElement(t);
		p.cluTab.addNotify();
	}
	
	public static void addClusterInfo(MainPanel p,ClusterIDInfo i)
	{
		if(clusters.contains(i.hostname))
		{
			 updateClusterInfo(p,i);
			 return;
		}
		Vector t = new Vector();
		clusters.add(i.hostname);
		t.addElement(i.hostname);
		t.addElement(i.isOn ? "Connected" : "Disconnected");
		t.addElement(i.isOn ? i.nodes : "n/a");
		t.addElement(i.isOn ? i.procs: "n/a");
		t.addElement(i.isOn ? i.rjobs: "n/a");
		t.addElement(i.isOn ? i.qjobs: "n/a");
		t.addElement(f.format(new Date()));
		p.rows.addElement(t);
		p.cluTab.addNotify();
	}
	
	
	public static void updateClusterInfo(MainPanel p,ClusterPanelInfo i)
	{
		int index = clusters.indexOf(i.hostname);
		if(index == -1) return;
		p.cluTab.setValueAt(i.hostname,index, 0);
		p.cluTab.setValueAt(i.status, index, 1);
		p.cluTab.setValueAt(i.nodes, index,  2);
		p.cluTab.setValueAt(i.procs, index,  3);
		p.cluTab.setValueAt(i.ajobs, index,  4);
		p.cluTab.setValueAt(i.qjobs, index,  5);
		p.cluTab.setValueAt(f.format(new Date()), index, 6);
	}
	public static void updateClusterInfo(MainPanel p,ClusterIDInfo i)
	{
		int index = clusters.indexOf(i.hostname);
		if(index == -1) return;
		p.cluTab.setValueAt(i.hostname,index, 0);
		p.cluTab.setValueAt(i.isOn ? "Connected" : "Disconnected", index, 1);
		p.cluTab.setValueAt(i.isOn ? i.nodes : "n/a", index,  2);
		p.cluTab.setValueAt(i.isOn ? i.procs : "n/a", index,  3);
		p.cluTab.setValueAt(i.isOn ? i.rjobs : "n/a", index,  4);
		p.cluTab.setValueAt(i.isOn ? i.qjobs : "n/a", index,  5);
		p.cluTab.setValueAt(f.format(new Date()), index, 6);
	}
	
	public static void updateClusterStatus(MainPanel p,String c, String status)
	{
		int index = clusters.indexOf(c);
		if(index == -1) return;
		p.cluTab.setValueAt(status,index,1);
	}
	
	
	public static void removeCluster(MainPanel p, String hostname)
	{
		int index = clusters.indexOf(hostname);
		if(index != -1)
		{
			p.rows.remove(index);
			clusters.remove(index);
			p.cluTab.addNotify();
		}
	}
	
	
	
}
